describe('VolumesController', function () {
    var $scope, $httpBackend, $routeParams;

    beforeEach(module('uifordocker'));
    beforeEach(inject(function (_$httpBackend_, $controller, _$routeParams_) {
        $scope = {};
        $httpBackend = _$httpBackend_;
        $routeParams = _$routeParams_;
        $controller('VolumesController', {
            '$scope': $scope,
            '$routeParams': $routeParams
        });
    }));

    it('initializes correctly', function () {
        expectGetVolumes();
        $httpBackend.flush();
    });


    it('issues correct remove calls to the remote API', function () {
        expectGetVolumes();
        $httpBackend.flush();
        $scope.volumes[0].Checked = true;
        $scope.volumes[2].Checked = true;
        $httpBackend.expectDELETE('dockerapi/volumes/tardis').respond(200);
        $httpBackend.expectDELETE('dockerapi/volumes/bar').respond(200);
        $scope.removeAction();
        $httpBackend.flush();
    });
    it('issues a correct volume creation call to the remote API', function () {
        expectGetVolumes();
        var createBody = {
            "Name": "tardis",
            "Driver": "local"
        };
        $httpBackend.expectPOST('dockerapi/volumes/create', createBody).respond(201);
        expectGetVolumes();
        $scope.addVolume(createBody);
        $httpBackend.flush();
    });

    function expectGetVolumes() {
        $httpBackend.expectGET('dockerapi/volumes').respond({
            "Volumes": [
                {
                    "Name": "tardis",
                    "Driver": "local",
                    "Mountpoint": "/var/lib/docker/volumes/tardis"
                },
                {
                    "Name": "foo",
                    "Driver": "local",
                    "Mountpoint": "/var/lib/docker/volumes/foo"
                },
                {
                    "Name": "bar",
                    "Driver": "local",
                    "Mountpoint": "/var/lib/docker/volumes/bar"
                }
            ]
        });
    }
});